Numerous conventional electronic information technology systems maintain information in an electronic or optical storage memory, such as an optical disk, and then retrieve selected data structures from the storage memory and into an operational memory of a computational device for processing and/or modification. After a data structure has been retrieved and processed or modified, the data structure may be read back into the storage memory. The format of the data structure may be altered when read or processed by the computational device. The format of the data structure may also be altered when written back into the storage memory from the computational device.
In some computers running object oriented data base management systems (“OODBMS”), software objects may be retrieved from a storage memory, read into a cache memory of the computer and reformatted for processing by the computer. After processing, these software objects may be reformatted to conform with a preferred format of the storage memory, and then written back into the storage memory. The objects read back into the storage memory may be modified and/or contain new information as a result of the processing performed by the computer. In this way object databases and the information recorded therein may be updated, expanded and more effectively managed.
The OODBMS may simultaneously manage multiple threads of information processes. Some of these threads may be directed to process the same objects. For example, the OODBMS may initiate a first process that generates persistent objects stored within a cache memory of a host computer of the OODBMS. In addition, a garbage collector function may be directed by the OODBMS to close certain persistent objects stored in the cache memory that are no longer being referenced by the first process. One primary purpose of the garbage collector may be free up storage space of the cache memory by closing persistent objects that are not of immediate interest to the OODBMS. The garbage collector will thereby initiate a finalizer function, wherein selected persistent objects are first reformatted for storage, then written into a storage memory, and the memory space temporarily dedicated to store these persistent objects is made available for storing other information.
The prior art therefore creates a dilemma in that the garbage collector may be running according to a one thread and attempting to close persistent objects of a process of another thread. This lack of synchronicity of the garbage collector and other processes of the OODBMS inhibits the efficiency of the garbage collector in determining (1.) which persistent objects of the cache memory may be written into the storage memory, and (2.) when storage locations of the cache memory assigned to store a temporary persistent object may be made available for other uses.
There is therefore a long felt need to increase the efficiency of an OODBMS by providing a system and technique for more effectively determining when memory locations storing one or more temporary persistent objects shall be made available for other uses.
It is understood that certain prior art OODBMS's will read an entire page or other grouping of software objects in to a cache memory of a host computer for the purpose of making one or more software objects of the read page or grouping available for information processing.
Garbage collection is the automatic reclamation of computer storage. Paul R. Wilson, “Uniprocessor Garbage Collection Techniques”, 1992, available on the Web at ftp.cs.utexas.edu/pub/garbage/gcsummary.ps, and Bill Venners, “Garbage Collection”, Chapter 9 of Inside the Java Virtual Machine, on the Web at www.artima.com/insidejvm/ed2/gcP.html, both of which are incorporated by reference herein, both of which provide excellent surveys of different garbage collection techniques, the individual aspects of which are beyond the scope of this disclosure.
The prior art includes efforts to improved object-oriented database management efficiency. U.S. Pat. No. 7,191,441 discloses a method and apparatus for suspending a software virtual machine; U.S. Pat. No. 7,069,279 presents a timely finalization of system resources; U.S. Pat. No. 7,024,436 teaches of a computer system with two heaps in contiguous storage; U.S. Pat. No. 7,017,162 discloses an application program interface for network software platform; U.S. Pat. No. 7,013,469 discusses an application program interface for network software platform; U.S. Pat. No. 6,883,172 discloses a system and method for bridging managed and unmanaged object systems; by utilizing an interface wrapper to facilitate transparent communications; U.S. Pat. No. 6,795,836 teaches of a method for accurately determining an object's lifetime; U.S. Pat. No. 6,684,392 presents a method and apparatus for distinguishing reference values from non-reference values in a runtime environment; U.S. Pat. No. 6,584,478 discloses a transparent garbage collection of resources; U.S. Pat. No. 6,473,777 discusses a method for accelerating java virtual machine byte code verification, just-in-time compilation and garbage collection by using a dedicated co-processor; U.S. Pat. No. 6,453,466 presents a method and apparatus for distinguishing reference values from non-reference values in a runtime environment; U.S. Pat. No. 6,393,439 teaches of a stored data object marking for garbage collectors; U.S. Pat. No. 6,295,640 discloses a method and apparatus for distinguishing reference values from non-reference values in a runtime environment; and U.S. Pat. No. 6,081,665 presents a method for efficient soft real-time execution of portable byte code computer programs.
More recent prior art includes additional efforts to improved object-oriented database management efficiency. United States Patent Application Publication No. 20070011660 discloses a deterministic runtime execution environment and method; United States Patent Application Publication No. 20070011415 presents an apparatus and method for deterministic garbage collection of a heap memory; United States Patent Application Publication No. 20060259528 discusses an implementation for collecting unmanaged memory; United States Patent Application Publication No. 20060225107 teaches of a system for running applications in a resource-constrained set-top box environment; and United States Patent Application Publication No. 20060156152 discloses critical finalizers.
The entire disclosures of each and every patent and patent application mentioned in this present disclosure, are incorporated herein by reference, in their entirety, and for all purposes. The patents incorporated herein by reference in their entirety and for all purposes include, but are not limited to, U.S. Pat. Nos. 7,191,441; 7,069,279; 7,024,436; 7,017,162; 7,013,469; 6,883,172; 6,795,836; 6,684,392; 6,584,478; 6,473,777; 6,453,466; 6,393,439; 6,295,640; and 6,081,665. The patents applications incorporated herein by reference in their entirety and for all purposes include, but are not limited to, United States Patent Application Publication No.'s 20070011660; 20070011415; 20060259528; 20060225107; and 20060156152.